/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"1AF89D5B-E358-458B-872A-BF5679CD0905",variableType:4}
 */
var fImpresion = 0;

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"52ED9132-EBAC-4394-90A4-2FF6C389CAC7"}
 * @AllowToRunInFind
 */
function onAction_consulta(event) {
	var estado = controller.find()
	if (estado == false){
    	globals.DIALOGS.showWarningDialog('Aviso',"Error al hacer el find","Ok")
		return		
	}
	var fechaDesde = new Date(globals.gAnio,globals.gMes-1,1)
	var fechaHasta = new Date(globals.gAnio,globals.gMes,0)
	
	fecha = '#' + utils.dateFormat(fechaDesde,'dd-MM-yyyy') + '...' + utils.dateFormat(fechaHasta,'dd-MM-yyyy') + '|dd-MM-yyyy'
	moneda = "A"
		
	controller.newRecord()
	
	fecha = '#' + utils.dateFormat(fechaDesde,'dd-MM-yyyy') + '...' + utils.dateFormat(fechaHasta,'dd-MM-yyyy') + '|dd-MM-yyyy'
	if (globals.gmoneda_consulta == 1)
	{
		moneda = "P"
	}
	else
	{
		moneda = "D"		
	}
	
		
	var cuantos = controller.search()
	if (cuantos == 0){
    	globals.DIALOGS.showWarningDialog('Aviso',"Sin asientos en el mes","Ok")
		return 		
	}
}

/**
 * Callback method for when form is shown.
 *
 * @param {Boolean} firstShow form is shown first time after load
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"9AB4028C-5311-4AE6-9B33-B9ABB2932E94"}
 * @AllowToRunInFind
 */
function onShow(firstShow, event) {
	globals.gvarios = 3
	foundset.multiSelect = true
	if (fImpresion == 0)
	{
		controller.loadRecords(null)
	}
	fImpresion = 0
}

/**
 * @param {String} tipo
 *
 * @properties={typeid:24,uuid:"996A5BCB-171F-4912-94DC-0E58F50E98B7"}
 * @AllowToRunInFind
 */
function jasper(tipo) {
/*	var $elegidos = foundset.getSelectedIndexes()
	if ($elegidos.length == 0)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe marcar los asientos a imprimir','OK')
		return
	}

	forms.asiento_impresion_2.controller.find()
	for ( var i = 0 ; i < $elegidos.length ; i ++)
	{
		foundset.setSelectedIndex($elegidos[i])
		if (i != 0)
		{
			forms.asiento_impresion_2.controller.newRecord()
		}
		forms.asiento_impresion_2.asiento_cab_id = foundset.asiento_cab_id
	}
	if (forms.asiento_impresion_2.controller.search() == 0)
		globals.DIALOGS.showWarningDialog('Aviso','No hay movimientos','OK')
	else
	{
		var $frm = solutionModel.getForm('asiento_impresion_2')
		/** @type {JSFoundSet<db:/contable/numcon>} 
		var $fs_numcon = databaseManager.getFoundSet('contable','numcon')
		$fs_numcon.find()
		$fs_numcon.anio 	= globals.gAnio
		$fs_numcon.mes 		= globals.gMes
		$fs_numcon.empresa 	= globals.gUservID
		if ($fs_numcon.search() != 0)
		{	
			if ($fs_numcon.marca_cierre == 0)
			{
				var lbl = $frm.newLabel('- PROVISORIO -',180,20,80,10)
				lbl.fontType = 'Trebuchet MS,1,9'
				lbl.transparent = true
			}
		}
		var tot_debe_p 	= $frm.getField('total_debe_p')
		var tot_hab_p 	= $frm.getField('total_haber_p')
		var tot_debe_d 	= $frm.getField('total_debe_d')
		var tot_hab_d	= $frm.getField('total_haber_d')
		
		if (globals.gmoneda_consulta == 1)
		{
			tot_debe_p.printable	= true
			tot_hab_p.printable 	= true
			tot_debe_d.printable 	= false
			tot_hab_d.printable		= false
		}
		else
		{
			tot_debe_p.printable	= false
			tot_hab_p.printable 	= false
			tot_debe_d.printable	= true
			tot_hab_d.printable	 	= true
		}
		
		forms.asiento_impresion_2.controller.recreateUI()
		forms.asiento_impresion_2.controller.sort('numero asc , columna asc')	
		
		if (tipo == 'pdf' && application.getApplicationType() == APPLICATION_TYPES.SMART_CLIENT)
		{	
			var jsFile = plugins.file.showFileSaveDialog( 'C:/asientos_autorizados_'+ utils.dateFormat(new Date(),'dd-MM-yyyy HH-mm-ss')+'.pdf' )
			if (jsFile)
			{
				forms.asiento_impresion_2.controller.print(false,false,plugins.pdf_output.getPDFPrinter(jsFile.getAbsolutePath()))
				application.executeProgram("rundll32.exe", ["url.dll,FileProtocolHandler", jsFile.getAbsolutePath()])
			}
		}
		else
		{
			fImpresion = 1
			forms.asiento_impresion_2.controller.showPrintPreview()
		}
	}*/
	
	var $cols 	= new Array('asiento_to_asiento_cab.numero','asiento_to_asiento_cab.fecha','cuenta_impresion','leyenda','division','centro','debe_pesos','haber_pesos','asiento_to_asiento_cab.texto')
	var $ds 	= databaseManager.convertToDataSet( asiento_cab_to_asiento, $cols)
	$ds.setColumnName(1,'numero')
	$ds.setColumnName(2,'fecha')
	$ds.setColumnName(7,'importe_debe')
	$ds.setColumnName(8,'importe_haber')
	$ds.setColumnName(9,'texto_cab')
	
	var $params = {
		userv: usuarios_to_uservs.razon_social
	}
	
	globals.metodoJasper(tipo,'contable/asiento.jasper','Asiento_N_'+ numero,$ds,$params)
}

/**
 *
 * @param {String} extension
 * @param {String} comienzo_archivo
 * @param {String} comienzo_linea
 * @param {String} marca_txt
 * @param {String} separador
 * @param {String} fin_linea
 * @param {String} fin_archivo
 *
 * @properties={typeid:24,uuid:"E3F1FF7F-4367-434C-8BB5-4A55ADE4C384"}
 */
function exportaExcel(extension,comienzo_archivo,comienzo_linea,marca_txt,separador,fin_linea,fin_archivo) {
	var $elegidos = foundset.getSelectedIndexes()
	if ($elegidos.length == 0)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe marcar los asientos a exportar','OK')
		return
	}
	var $nombre = 'c:/Asientos - ' + globals.glegajo + extension
	var jsFile
	if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
	{
		jsFile = plugins.file.createFile($nombre)
	}
	else
	{
		jsFile = plugins.file.showFileSaveDialog($nombre)
	}
	if (jsFile)
	{
		var fw = new Packages.java.io.FileWriter(jsFile.getAbsolutePath());
		var bw = new Packages.java.io.BufferedWriter(fw);
		
		var fs 		= forms.asiento_cab_consulta.foundset
		var $regs 	= forms.asiento_cab_consulta.foundset.getSelectedIndexes()
		
		if (comienzo_archivo != '')
		{
			bw.write(comienzo_archivo,0,comienzo_archivo.length)
			bw.newLine()
		}
		//ESCRIBO EL NOMBRE DE LAS COLUMNAS EN LA PRIMER LINEA DEL ARCHIVO
		var linea = comienzo_linea + marca_txt + 'Nº Asiento' + marca_txt + separador + marca_txt + 'Fecha' + marca_txt + separador + marca_txt + 
					'Nº Cuenta' + marca_txt + separador + marca_txt + 'Nombre Cuenta' + marca_txt + separador + marca_txt + 
					'Division' + marca_txt + separador + marca_txt + 'Centro' + marca_txt + separador + marca_txt + 
					'Debe' + marca_txt + separador + marca_txt + 'Haber' + marca_txt + separador + marca_txt + 'Leyenda' + marca_txt + fin_linea
		bw.write(linea,0,linea.length)
		var cuantos = $regs.length
		
		var i = 0
		while (i < cuantos)
		{
			var $rcd = fs.getRecord($regs[i])
			var $ctos = databaseManager.getFoundSetCount($rcd.asiento_cab_to_asiento)
			for (var j = 1 ; j <= $ctos ; j++)
			{
				var $rcd2 = $rcd.asiento_cab_to_asiento.getRecord(j) 
				linea = comienzo_linea + marca_txt + $rcd.numero+ marca_txt + separador + marca_txt + utils.dateFormat($rcd.fecha, 'dd-MM-yyyy') +
						marca_txt + separador + marca_txt + $rcd2.asiento_to_cuentas.cuenta_busca+ marca_txt + separador + 
						marca_txt +$rcd2.cuenta_nombre_impresion+ marca_txt + separador + marca_txt +$rcd2.division+ marca_txt + separador + 
						marca_txt +$rcd2.centro+ marca_txt + separador + marca_txt + utils.numberFormat($rcd2.importe_debe,2) + marca_txt + 
						separador + marca_txt + utils.numberFormat($rcd2.importe_haber,2)+ marca_txt + separador + marca_txt +$rcd2.leyenda + marca_txt + fin_linea
				bw.newLine()
				bw.write(linea,0,linea.length)
			}
			linea  = comienzo_linea + fin_linea
			bw.write(linea,0,linea.length)
			bw.newLine()
			i++
		}
		if (fin_archivo != '')
		{
			bw.write(fin_archivo,0,fin_archivo.length)
		}
		bw.close()
		fw.close()
		
		if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
		{
			var mimeType = 'application/vnd.ms-excel'
			if (!plugins.file.writeFile(jsFile.getName(), jsFile.getBytes(), mimeType))
			{
				globals.DIALOGS.showErrorDialog('Error','Ocurrio un error y no se pudo grabar el archivo','OK');
			}
			plugins.file.deleteFile(jsFile.getAbsolutePath())
		}
		else
		{
			application.executeProgram("rundll32.exe", ["url.dll,FileProtocolHandler", jsFile.getAbsolutePath()])
		}
	}
}

/**
 * @properties={typeid:24,uuid:"C7F9A2BF-E80D-4BAC-90D0-4B2426CD60DB"}
 */
function imprimir() {
	jasper('impresion')
}

/**
 * @properties={typeid:24,uuid:"DBA94F09-5DE3-4643-ACD9-A0241AA11EFC"}
 */
function pdf() {
	jasper('pdf')
}

/**
 * @properties={typeid:24,uuid:"009C0125-6692-4D41-BD6A-8EC96D51AD62"}
 */
function xls() {
	//jasper('xls')
	exportaExcel('.xls','<TABLE CELLPADDING="1" CELLSPACING="0" BORDER="0">','<tr><td>','','</td><td>','</td></tr>','</table>')
}

/**
 * @properties={typeid:24,uuid:"D618801F-92A5-4EB2-91E2-FBAE6AB2345C"}
 */
function csv() {
	//jasper('csv')
	exportaExcel('.csv','','','"',';','','')
}

/**
 * Handle changed data.
 *
 * @param {String} oldValue old value
 * @param {String} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"7808714F-FCF4-4016-893E-02D8F05877AE"}
 */
function onDataChangeFecha(oldValue, newValue, event) {
	globals.gMes 	= newValue.substring(0,newValue.indexOf('|'))
	globals.gAnio 	= newValue.substring(newValue.indexOf('|')+1,newValue.length)

	return true
}
